The present inventive concepts relate to solid state drives (SSDs), and more particularly, to SSD memory cache occupancy prediction for reducing I/Os, reducing wear, and improving performance.
The number of modern devices that include SSDs is increasing at a significant pace. With the rapid expansion of Internet-enabled devices, computer server farms, mobile devices, high-speed networks, and the like, SSDs are becoming a crucial backbone storage technology that enables a broad range of innovative applications. To increase capacity and performance, some attempts have been made to group SSDs into shared arrays. But a host device or agent that interacts with a shared SSD array has limited knowledge of the state of the various SSDs.
In particular, the state of the cache within an SSD, which may be a volatile memory such as a dynamic random access memory (DRAM), is not exposed to any external device (e.g., host agent). Because of such opaqueness, current approaches for interacting with an SSD array are relatively less efficient than they otherwise could be. For example, if a first write occurs to a particular logical memory address, such first write will be directed to a first SSD. Then, if a second write occurs to the same particular logical memory address, conventional approaches may send the second write to a different SSD, and then invalidate the contents written to the first SSD. This requires multiple I/Os to the non-volatile memory of different SSDs, thereby reducing performance. Embodiments of the present inventive concept address these and other limitations in the prior art.